#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSerialPort>
#include <QListWidgetItem>
#include <QMenu>
#include <QSqlQuery>

QT_BEGIN_NAMESPACE
namespace Ui
{
    class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget* parent = nullptr);
    ~MainWindow();

    void read_SerialPort_Data();

private slots:
    void on_openSerialPortButton_clicked();

    void on_powerOnButton_clicked();

    void on_powerOffButton_clicked();

    void on_resetPositionButton_clicked();

    void on_queryElectronicButton_clicked();

    void on_queryAngleButton_clicked();

    void on_queryStatusButton_clicked();

    void on_clearHistoryButton_clicked();

    void on_responseListWidget_itemClicked(QListWidgetItem* item);

    void on_sendElectronicPointButton_clicked();

    void on_commandListWidget_itemClicked(QListWidgetItem* item);

    void on_commandLineEdit_textChanged(const QString& arg1);

    void on_commandListWidget_customContextMenuRequested(const QPoint& pos);

private:
    Ui::MainWindow* ui;

    QSerialPort serialPort;
    QMenu* menu;
    QSqlQuery* query;

    void update_command_listWidget(const QByteArray& command);

    QString format_hex_string(const QByteArray& data);

    void update_response_listWidget(const QByteArray& response);
};
#endif // MAINWINDOW_H
